Hi Gerald,
That is to be expected as it is impossible for the servo to have zero error if the commanded destination isn't an exact encoder position. For example if commanded to encoder position 1.2 and the encoder reads 1 then the error will be 0.2. If the encoder moves to 2 then the error will be -0.8. (Note I'm ignoring the 1.25 factor for simplicity as it doesn't really change anything). Any Integrator in the system will cause a dither between the two positions where 80% of the time is spent at 1 and 20% of the time is at 2. So the average over a long time is exactly 1.2.
KFLOP has Deadband parameters to help eliminate the dither. The Deadband Range allows you to specify an error range to be treated with lesser or zero gain. So you might try a Deadband Range=1.5 and Deadband Gain of 0. This basically tells the Servo to treat errors less than 1.5 as if they were zero and to make no corrections.
Dither is actually very complex nonlinear dynamic behavior that is dependent on your system. Adding Deadband may or not stop the dither. You may find it now dithers one or more counts away. Or may oscillate back and forth several counts.
There is an example called AntiServoDither__ALL.c that you might also try to completely disable the Integrator and reduce gains when the destination hasn't been moving.
HTH
Regards
TK
Group: DynoMotion |
Message: 11370 |
From: geraldft |
Date: 4/12/2015 |
Subject: Re: Closed Loop Stepper standby mode |
Well yes it does seem to work - though the motor has no load at present. Hopefully this does the trick. I'm not sure if I will use this feature much yet, but good to know what it does. My system has very low backlash so it would be mainly to correct for loss of steps over time.
Thanks Gerald
|
|